#include<stdio.h>
#include<iostream>
#include<assert.h>
using namespace std;

//void Swap(int& a, int& b)
//{
//	int tmp = a;
//	a = b;
//	b = tmp;
//}
//
//int main()
//{
//	int a = 1, b = 0;
//	Swap(a, b);
//	cout << a <<' '<< b << endl;
//}


typedef struct ListNode
{
	int val;
	//struct ListNode* next; // c / cpp
	ListNode* next;          // cpp
}*PNode;

//int Cout()
//{
//	static int n = 3;
//	n++;
//	return n;
//}


//int& Cout(int x)
//{
//	int n = x;
//	n++;
//	return n;
//}
//
//int main()
//{
//	int ret = Cout(10);
//	cout << ret << endl;
//
//	Cout(20);
//	cout << ret << endl;
//}


//int& Cout(int x)
//{
//	int n = x;
//	n++;
//	return n;
//}
//
//int main()
//{
//	int& ret = Cout(10);
//	cout << ret << endl;
//
//	Cout(20);
//	cout << ret << endl;
//}


//int& Cout(int x)
//{
//	int n = x;
//	n++;
//	return n;
//}
//
//int main()
//{
//	int& ret = Cout(10);
//	cout << ret << endl;
//
//	Cout(20);
//	cout << ret << endl;
//}


struct SeqList
{
	int a[100];
	size_t size;

	int& at(int pos)
	{
		assert(pos >= 0 && pos < 100);
		return a[pos];
	}

	int& operator[](int pos)
	{
		assert(pos >= 0 && pos < 100);
		return a[pos];
	}
};

int main()
{
	SeqList s;
	s.at(0) = 0;
	s.at(0)++;
	cout << s.at(0) << endl;

	s[1] = 10;
	s[1]++;
	cout << s[1] << endl;

	/*vector<int> v;
	for (int i = 0; i < v.size(); ++i)
	{
		v[i]++;
	}*/

	return 0;
}